/*********************************************************************
2012-12  Created by liu yong(kevin)
QQ:461693690
*********************************************************************/
#include "stm32f4xx.h"
#include "raw_api.h"
#include "GPIO.h"


#define             INIT_TASK_STK_SIZE      256
PORT_STACK          Init_Task1_Stack[INIT_TASK_STK_SIZE];
PORT_STACK          Init_Task2_Stack[INIT_TASK_STK_SIZE];
RAW_TASK_OBJ 	    Task1;
RAW_TASK_OBJ 	    Task2;


/**********************************************************************

***********************************************************************/
void  OS_CPU_SysTickInit(void)
{
   SysTick_Config(SystemCoreClock / RAW_TICKS_PER_SECOND);									
}

void Init_Task_1(void *parg)
{
  for(;;)
  {
    GPIO_ToggleBits(GPIOD, GPIO_Pin_13);
    raw_sleep(500);
  }
    	
}

void Init_Task_2(void *parg)
{
  for(;;)
  {
    GPIO_ToggleBits(GPIOD, GPIO_Pin_12);
    raw_sleep(300);
  }
    
}

int main(void)
{
  Initialize_GPIO();
  OS_CPU_SysTickInit();
  raw_os_init();								
  raw_task_create(&Task1, (RAW_U8  *)"Task1", 0,
	                         7, 0,  Init_Task1_Stack, 
	                         INIT_TASK_STK_SIZE , Init_Task_1, 1); 
  raw_task_create(&Task2, (RAW_U8  *)"Task2", 0,
	                         8, 0,  Init_Task2_Stack, 
	                         INIT_TASK_STK_SIZE , Init_Task_2, 1); 
  raw_os_start();
  return 0;
}


